Docker 配置 Redis 和 MySQL

一.配置 Docker

1.1 安装 Docker

在 ArchLinux 系统中,直接使用 yay 命令从 AUR 中安装 Docker

1
2
3
4
5
# 安装 docker
yay -S docker

# 查询 docker 版本得到回复即为成功
docker --version

1.2 配置国内镜像源以及代理

  1. 配置国内镜像源:

    1
    2
    3
    4
    5
    6
    7
    8
    # 换国内镜像源(此处为中科大的 docker 源),位置在 /etc/docker/daemon.json, 没有则创建
    {
    "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com",
    "https://registry.docker-cn.com"
    ]
    }
  2. 配置代理:

    1
    2
    3
    4
    5
    # 代理设置, 位置在 /etc/systemd/system/docker.service.d/http-proxy.conf, 没有则创建
    [Service]
    Environment="HTTP_PROXY=http://proxy_ip:port"
    Environment="HTTPS_PROXY=http://proxy_ip:port"
    Environment="NO_PROXY=localhost,127.0.0.1,.example.com" # 此行可以不用

二.配置 Redis

从 docker 中拉取国内 Redis 镜像源,同时指定特定版本:

1
sudo docker pull redis:5.0.14

在指定位置创建几个目录用来将容器数据映射到 Linux 本地

1
2
3
mkdir -p /home/dustwind/redis/conf
mkdir -p /home/dustwind/redis/data
mkdir -p /home/dustwind/redis/log

然后运行 Redis 的 Docker 镜像源:

1
2
3
4
5
6
sudo docker run --name dustwind-redis \
--restart always \
-p 6380:6379 \
-v /home/dustwind/redis/data:/data \
-v /home/dustwind/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis:5.0.14 redis-server /etc/redis/redis.conf

[!提示]

  1. 由于本机系统代理问题,可能存在 redis-cli 命令行中能连接 Redis 服务器,而 Redis Desktop Manager 客户端中却无法连接 Redis 服务器的情况。
  2. 如果开放了 Redis 远程访问权限仍然无法通过远程工具连接 Redis,则考虑是云服务器防火墙和阿里云安全策略导致访问被拦截。

三.配置 MySQL

从 docker 中拉取国内 MySQL 镜像源,同时指定特定版本:

1
sudo docker pull mysql:8.0.41

在指定位置创建几个目录用来将容器数据映射到 Linux 本地

1
2
3
mkdir -p /home/dustwind/mysql/config
mkdir -p /home/dustwind/mysql/data
mkdir -p /home/dustwind/mysql/logs

然后运行 MySQL 的 Docker 镜像源:

1
2
3
4
5
6
7
8
sudo docker run --name dustwind-mysql \
--restart=on-failure:3 \
-p 3308:3306 \
-v /home/dustwind/mysql/config/my.cnf:/etc/mysql/my.cnf \
-v /home/dustwind/mysql/data:/var/lib/mysql \
-v /home/dustwind/mysql/logs:/logs \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.0.41

穿透 docker 中,对 MySQL 进行更多配置

1
2
3
4
5
6
# 先进入 bash 环境,然后运行 MySQL
docker exec -it dustwind-mysql bash
mysql -uroot -p"123456"

# 直接一步到位进入 MySQL 容器
docker exec -it dustwind-mysql mysql -uroot -p"123456"

开放 MySQL 的远程访问权限:

1
2
3
use mysql
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;

[!重要]
如果开放了 MySQL 远程访问权限仍然无法通过 Navicat 等远程工具连接 MySQL,则考虑是云服务器防火墙和阿里云安全策略导致访问被拦截。